// pages/login/login.js
//导入接口
import {reqLogin,reqUserInfo} from "../../api/user"
import{setStorage}from "../../utils/storage"
import{toast}from "../../utils/extendApi"
import{userStore} from "../../store/userstore"
import{ComponentWithStore}from "mobx-miniprogram-bindings"
ComponentWithStore({
  //封装响应状态
  storeBindings:{
    store: userStore,
    //要使用哪些字段属性
    fields:['token','userInfo'],
    //要使用哪些方法
    actions:['setToken','setUserInfo']
  },
  methods:{
    //授权登录
   login(){
       //获取临时登录凭证
       wx.login({
           //把code解构出来
         success:async  ({code}) => {
           if(code){
             //调用接口获取token,给身份令牌代表授权登录
             const res=await reqLogin(code)
             //登录成功后将token存到本地，同步方法 
             setStorage('token', res.data.token)
             //将数据存储到store对象中
             this.setToken(res.data.token)
             //获取用户信息
            this.getUserInfo()
             //登录成功，返回之前的页面
            wx.navigateBack()

           }else{
               //登录失败后给用户进行提示
               toast({title:"授权失败，请销后再试~~~"})

           }
         },
       })
   },
   //获取用户信息
   //异步请求async,外边
   //async 搭配 await 同步，内部
   async getUserInfo(){
    //解构data
     const {data}=await reqUserInfo()
     //将用户信息存到本地
     setStorage('userInfo',data)
     //将用户信息存到store
     this.setUserInfo(data)
   }
  }
})
